import { message } from "antd";
import axios, { AxiosRequestConfig, AxiosResponse } from "axios";

/**
 * 状态码
 * 20000 正常
 * 10000 异常
 * 10001 无权限
 */
export enum Code {
  SUCCESS = 20000,
  ERROR = 10000,
  NO_AUTH = 10001,
}
const config: AxiosRequestConfig = {
  baseURL: BASE_URL,
};
const axiosInstance = axios.create(config);

axiosInstance.interceptors.request.use(
  (config) => {
    return config;
  },
  (err) => {
    message.error(err);
  }
);

axiosInstance.interceptors.response.use(
  (response: any) => {
    const { data } = response;
    // 异常处理
    switch (data.code) {
      case Code.ERROR: {
        message.error(data.data.message || "服务器错误，请联系管理员");
        return false;
      }
      case Code.NO_AUTH: {
        message.error(data.data.message || "暂无权限");
        return false;
      }
    }
    return data;
  },
  (err) => {
    message.error("服务器错误，请联系管理员");
  }
);

export default axiosInstance;
